1. Field of the Invention
The present invention relates generally to the field of packetized data transmission, and more particularly, to a system and method for forward error correction (FEC) for packetized data networks, such as a Voice-over-IP (VoIP) network.
2. Description of the Related Art
A typical communications network 10 is shown in FIG. 1. Individual computers 12, 14, 16, 18, 20 are connected via a network interface 30, 32, 34 to a network, such as the Internet 40. The network 10 forwards and routes data sent from a source computer to a destination computer. Increasingly, such networks are also used to transmit voice signals, as well as data. In fact, digital telephones 50 may be connected directly to the network 10, as shown in the Figure. However, since such networks were originally designed to transmit data, and not necessarily in real-time, there are many problems associated with transmitting voice conversations between two parties.
In packetized voice communication systems (e.g. Voice-over-IP (VoIP), frame relay, or ATM), voice data is digitized and lossily compressed into frames. Each frame represents the voice data for a small unit of time, typically 30 milliseconds. Frames are then transported over the network from a source to a destination, where the frames are then decompressed.
In a Voice-over-IP (VoIP) network, each frame of voice data is typically encapsulated in one datagram. The Internet Protocol (IP) imposes a minimum of 20 bytes of header, containing such information as the destination EP address. The User Datagram Protocol (UDP), typically used for voice transport applications, adds another six bytes of header information. A voice frame encoded with, for example, the Lucent 9600 codec is 18 bytes long. (FIG. 2).
It is the responsibility of the underlying network protocols to ensure that the packets are received at the receiving end. Occasionally, however, packets may be lost or corrupted. In a protocol such as TCP running over EP, if a packet is missing, it is the responsibility of the TCP layer to ask for retransmission of the packet, thus ensuring data integrity. However, in a VoIP network, the compressed voice packets are time critical, and if a packet is lost there is not time to request a retransmission of the packet. This may result in the voice sounding xe2x80x9cbroken-up.xe2x80x9d
One common method to overcome this problem is to use a buffer which stores a certain number of packets in a queue. If a packet is missing, its retransmission can be requested and the packet received before the packets are decompressed. Packets can then be rearranged to ensure that they are in the correct order. However, this produces unacceptably long latencies as a result of the extra retransmission time and buffer delay. For example, in FIG. 3, the total latency for the receive queue is 150 ms. For this method to work, the queue length needs to be sufficiently long to account for the retransmission latency. Assuming a retransmission latency of 120 ms, as shown in FIG. 4, a lost packet can be recovered before the packet is sent to the decompression hardware. In reality, the retransmission latencies are much greater than 120 ms, and this approach thus becomes unacceptable.
Alternatively, each packet may be transmitted two or three times, but this is an inefficient use of bandwidth. Thus, it would be desirable to have an improved error correction technique that could be used with VoIP systems, without introducing large latencies and without significantly increasing the required bandwidth.
In general, the present invention is a system and method for using forward error correction (FEC) to improve transmission reliability for data packets transmitted on a packetized data network, such as an Internet Protocol (EP) network. Packets containing error data are transmitted separately from corresponding voice packets. The error packets are transmitted a predetermined number of packets before the voice packets, to increase the probability that either the voice packet or error packet will be received. The error packets are preferably created using a Reed-Solomon algorithm. This approach greatly reduces the amount of error data that needs to be transmitted, without substantially increasing latency.
Additionally, the present invention may be further enhanced by dynamically adapting the amount of error correction that is sent based upon the xe2x80x9creliabilityxe2x80x9d of a network connection. In another embodiment, voice frames and error frames from different conversations are packed at a same time interval to increase transmission efficiency.